package com.javaee.ejb.session;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import com.javaee.ejb.entity.Project;

/**
 * Session Bean implementation class EmployeeManager
 */
@Stateless
public class ProjectManager implements ProjectManagerRemote {


	//////////////////
	//Membres priv�s//
	//////////////////
	@PersistenceContext		//Persistence g�r�e par le conteneur (injection � l'ex�cution)
	EntityManager m_GestionnaireEntites;		//g�re la persistence des donn�es
	
	//////////////////////
	//M�thodes publiques//
	//////////////////////
	//Constructeur par d�faut
    /**
     * Default constructor. 
     */
    public ProjectManager() {
        // TODO Auto-generated constructor stub
    	
    }

    //Permet d'ajouter un employ
    public void AjouterProjet(Project p_Projet)
    {
    	//Ajout de l'employ� � la base de donn�es
    	m_GestionnaireEntites.persist(p_Projet);
    }
    
    //R�cup�re la liste de tous les employ�s
    @SuppressWarnings("unchecked")	//permet d'�viter la v�rification du transtypage explicite
	public List<Project> GetProjets(int manager)
    {
    	return (List<Project>)m_GestionnaireEntites.createNamedQuery("FindAllProjects").setParameter("manager", manager).getResultList();
    }
    
    @SuppressWarnings("unchecked")
	public List<Project> GetProjetsManager(int manager)
    {
    	return (List<Project>)m_GestionnaireEntites.createNamedQuery("FindAllProjectsManager").setParameter("manager", manager).getResultList();
    }
    
    //R�cup�re l'employ� correspondant au nom d'utilisateur pass� en param�tre
    public Project GetProjetParId(int p_Identifiant)
    {
    	return (Project)m_GestionnaireEntites.createNamedQuery("FindProjectById").setParameter("p_Identifiant", p_Identifiant).getSingleResult();
    }

	@Override
	public void UpdateProject(Project p) {
		m_GestionnaireEntites.merge(p);
	}
	
	public void DeleteProject(int id)
	{
		Project p = GetProjetParId(id);
		m_GestionnaireEntites.remove(p);
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Project> getAllProjets() {
		return (List<Project>)m_GestionnaireEntites.createNamedQuery("FindReallyAllProjects").getResultList();
	}

}
